<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Route;
use App\Admin\ClientCode;

class ClientCodeController extends Controller
{
    //客户单位编码 列表展示
    public function index(Request $request)
    {
        if ($request->expectsJson()) {
            //ajax请求
            //客户单位编码 列表 datatable的ajax 加载
            $data = ClientCode::orderBy('path')->get();
            $jsonData['data'] = $data;
            return response()->json($jsonData);
        }
        else {

            $data = ClientCode::orderBy('path')->get();
            return view('admin.clientCode.index', compact('data'));
        }
    }

    //客户单位编码 删除
    public function del(Request $request)
    {

        $clientCode = new ClientCode();
        $id = $request->id;
        //交给模型处理数据  delete 返回受影响的行数
        $result = $clientCode->where('id', $id)->delete();
        //由于框架自身不支持响应bool值，所以转化一种形式
        return $result >= 0 ? '1' : '0';
    }

    //客户单位编码 添加
    public function add(Request $request)
    {
        $clientCode = new ClientCode();
        if ($request->isMethod('POST')) {
            $post_data = $request->only(['name', 'code', 'pid']);
            //通过算法制作 path 和 level，并实现整条记录的填充
            $result = $clientCode->saveData($post_data);
            //由于框架自身不支持响应bool值，所以转化一种形式
            return $result ? '1' : '0';
        }
        else {
            $clientCode_info_all = $clientCode->where('level', '<', '2')->orderBy('path')->get();

            return view('admin.clientCode.add', compact('clientCode_info_all'));
        }
    }


    //客户单位编码 修改
    public function edit(Request $request)
    {
        $clientCode = new ClientCode();

        if ($request->isMethod('POST')) {
            $data = $request->only(['id', 'name', 'code', 'pid']);
            //交给模型处理数据
            $result = $clientCode->updateData($data);
            //由于框架自身不支持响应bool值，所以转化一种形式
            return $result ? '1' : '0';
        }
        else {
            //查询要修改的客户单位编码 信息
            $clientCode_info_current = $clientCode->find($request->id);
            if ($clientCode_info_current) {
                //查到了结果
                $clientCode_info_all = $clientCode->where('level', '<', '2')->orderBy('path')->get();

                return view('admin.clientCode.edit', compact('clientCode_info_current', 'clientCode_info_all'));
            }
            else {
                //未查到结果
                $error_title = '';
                $error_description = '当前记录已经删除 ~';

                $js = <<<eof
                    <script type="text/javascript">
                        parent.table_reload(0);//0停留在当前页，1回到第一页
                    </script>
eof;
                echo view('errors.error', compact('error_title', 'error_description'));
                return $js;
            }
        }
    }

    //客户单位分类编码 列表，添加
    public function classIndex(Request $request)
    {
        if ($request->isMethod('POST')) {
            if ($request->id !== '') {
                $res = DB::table('a_client_code_class')->where('id', $request->id)->update(['name' => $request->name]);
                $msg = $res ? '编辑成功' : '未修改';
                return out($res, $msg);
            }
            $exist = DB::table('a_client_code_class')->where('code', $request->code)->exists();
            if ($exist) {
                return out(0, '编码已存在');
            }
            $res = DB::table('a_client_code_class')->insertGetId(['code' => $request->code, 'name' => $request->name]);
            $msg = $res ? '添加成功' : '添加失败';
            return out($res, $msg);
        }
        $data = DB::table('a_client_code_class')->orderBy('code','desc')->get();
        return view('admin.clientCode.class.index', compact('data'));
    }

    //客户单位分类编码 删除
    public function classDel(Request $request)
    {
        $id = $request->id;
        if ($id) {
            $info = DB::table('a_client_code_class')->find($id);
            $exist = DB::table('a_contract')->where('client_code_class', $info->code)->exists();
            if ($exist) {
                return out(0, '不能删除，当前分类下有工器具类型', ['time' => 2000]);
            }
            $res = DB::table('a_client_code_class')->where('id', $id)->delete();
            return out($res, $res ? '删除成功' : '删除失败', ['time' => $res ? 1000 : 2000]);
        }
        return out(0, '请求错误', ['time' => 2000]);
    }
}
